home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / CAD / EEDRAW22.ARJ / EEDRAW.DOC < prev    next >
Text File  |  1991-08-04  |  38KB  |  832 lines

  1.          EEDRAW - Electrical Engineering Drawings (ver 2.2)
  2.          --------------------------------------------------
  3.  
  4.   BECAUSE EEDRAW/EED-PS/EEDEPSON ARE LICENSED FREE OF CHARGE, I PROVIDE
  5. ABSOLUTELY NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.
  6. EXCEPT WHEN OTHERWISE STATED IN WRITING, I GERSHON ELBER PROVIDE EEDRAW/
  7. EED-PS/EEDEPSON PROGRAMS "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
  8. EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  9. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
  10. ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
  11. YOU. SHOULD THE EEDRAW/EED-PS/EEDEPSON PROGRAMS PROVE DEFECTIVE, YOU ASSUME
  12. THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  13.  
  14.   IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL GERSHON ELBER,
  15. BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES,
  16. OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
  17. USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR A FAILURE
  18. OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY GERSHON ELBER)
  19. THE PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES,
  20. OR FOR ANY CLAIM BY ANY OTHER PARTY.
  21.  
  22. 1. INTRODUCTION
  23. ---------------
  24.  
  25. EEDraw is a simple parametric drawing program, specifically designed for
  26. EE (Electrical Engineering) type of drawing. The program fully allows new
  27. parametric types, through library mechanisms, and in fact all the EE types
  28. are defined this way. This library mechanism is extremely useful in defining
  29. new types and can be used for other applications other than EE.
  30.  
  31. The following graphic devices are supported for display:
  32. Hercules, CGA, ATT, EGA, VGA and SVGA (through user provided BGI driver).
  33. The following printing devices are supported (via the printing drivers):
  34. EPSON compatible printers (8 pins), PostScript printers.
  35.  
  36. Usage: EEDraw [-z] *[FileName[.EED]]
  37.  
  38. Options: [-z] Print version number and usage.
  39.  
  40. Quick start: The program comes with quite common setup. If you have a mouse
  41. and a VGA/EGA/Hercules/CGA then you can simply start eedraw. Typing
  42. 'eedraw 82720-1.eed 82720-2.eed' will restart eedraw and prompt you for two
  43. windows for the above two files. Click on left button (return on keyboard)
  44. to pick window corners. Click on right button (space bar on keyboard) if you
  45. want to default size (maximum size). Alt-Q, by default, will take you out.
  46.  
  47. 2. INSTALATION
  48. --------------
  49.  
  50. For correct execution of the main program (EEDraw), the following files must
  51. exist in one of the path directories:
  52.  
  53. 1. EEDraw.exe
  54. 2. EEDraw.cfg
  55. 3. EEDraw.bnd
  56. 4. EEDraw.hlp
  57. 5. *.lib
  58.  
  59. For correct execution of the printer drivers (EED-PS, EED-Epsn), the following
  60. files must exists in one of the path directories (see also Appendix B):
  61.  
  62. 1. EED-PS.exe                1. EED-Epsn.exe
  63. 2. EED-PS.cfg                2. EED-Epsn.cfg
  64. 3. *.lib                3. *.lib
  65.  
  66. The library files (*.lib) are the same for the printer drivers and eedraw
  67. itself and should exist probably only once.
  68. See SETUP below shows how to change the setup of this programs.
  69. The default values should be enough to start and learn this program.
  70.  
  71. 3. SETUP
  72. --------
  73.  
  74. EEDraw set up is done through two files: EEDraw.cfg and EEDraw.bnd.
  75.  
  76. EEDraw.cfg
  77. ----------
  78.  
  79. This files contain global parameters that should be selected and set only
  80. once, in final installation stage. Empty lines or anything after a semicolon
  81. (';') is ignored. This file is read once with eedraw is being started.
  82. Parameters that can be set are:
  83.  
  84. 1. AutoPan - Boolean flag. If TRUE, any operation involves in the drawing
  85.    space (such as move, copy or draw) will auto-pan if cursor exists screen.
  86.    If FALSE, Panning option must be used manually to perform this operation.
  87.    This Boolean flag can be set from the Status main menu.
  88.    For example:
  89.    AutoPan    TRUE
  90. 2. WindowName - Boolean flag. If TRUE each EEDraw data file name is printed
  91.    in the head of the file. If FALSE no name is printed and this makes some
  92.    more space for the drawing itself.
  93.    This Boolean flag can be set from the Window main menu.
  94.    For example:
  95.    WindowName    TRUE
  96. 3. ATKeyboard - Boolean flag. If TRUE, it is assumed AT style keyboard bios
  97.    calls (also known as Enhanced keyboard - if you have F11/F12 on your
  98.    keyboard, good chance you can set this to TRUE). This will enable using
  99.    more complex scan codes, not supported by regular keyboard (such as
  100.    F11/F12). Note however it may HANG your system if it is not so.
  101.    For example:
  102.    ATKeyboard    FALSE
  103. 4. MouseSensitivity - Integer flag. Default is set to 10 which is a good
  104.    start. Making this number bigger makes the mouse less sensitive.
  105.    For example
  106.    MouseSensitivity 10
  107. 5. HVLines - Boolean flag. If TRUE, lines are coerced to be vertical/horizontal
  108.    only. This Boolean flag can be set from the Status main menu.
  109.    For example
  110.    HVLines    TRUE
  111. 6. SnapDistance    - Integer value. Sets the distance in drawing space of points
  112.    to be snapped. You probably do not want to change this, especially not in
  113.    the middle of a drawing. This Integer value can be set from Status main
  114.    menu.
  115.    For example:
  116.    SnapDistance    16
  117. 7. Allow256Colors - Boolean flag. 256 colors BGI drivers will have a richer
  118.    set of colors. If FALSE such a driver will be forced to use only 16 colors
  119.    effectively  having same colors are EGA or VGA default colors (EGAVGA.BGI).
  120.    For example:
  121.    Allow256Colors    FALSE
  122. 8. AllowAsyncEvents - Boolean flag. The user interface supports async event
  123.    handling. This means that one can pop up something while something else
  124.    is being poped up already for example. This has the advantage of the
  125.    ability to arbitrary "jump" between commands. However this may be VERY
  126.    confusing as well. Leave it FALSE at least at the beginning!
  127.    For example:
  128.    AllowAsyncEvents    FALSE
  129. 9. SaveBackMethod - Integer. Underlaying windows are being saved for short
  130.    life time pop up items such as queries. This integer selects where to
  131.    save this data. Options are:
  132.    1 - Conventional memory. This obviously reduces the amount of memory
  133.        for the EE drawings themselves.
  134.    2 - Expanded memory.
  135.    3 - XMS Extanded memory (currently not supported).
  136.    4 - Disk file. For reasonable response this better be a ram disk. See
  137.        also SaveBackPath below.
  138.    The device, this data is saved into, should be able to hold ~100k for
  139.    16 colors BGI drivers and twice that for 256 colors BGI drivers.
  140.    For example:
  141.    SaveBackMethod    1
  142. 10. SaveBackPath - String. This string specifies where back windows should
  143.    be saved. This full path should have a postfix '\' in it.
  144.    For example:
  145.    SaveBackPath        "f:\temp\"
  146. 11. Mouse - Boolean flag. Inform the system if a Mouse exists or not.
  147.    If this is commented out, auto detection will be used.
  148.    For example:
  149.    Mouse    TRUE
  150. 12. Joystick - Boolean flag. Inform the system if a joystick exists or not.
  151.    Must be TRUE for a joystick to be used. Personally the joystick was not
  152.    found accurate enough for this type of drawing.
  153.    Joystick    FALSE
  154. 13. BGIDriverPath - specifies where to look for the *.BGI drivers. Note the
  155.    drivers are supplied with this program (type 'dir *.bgi') and you should
  156.    update this path to the exact place you had moved them.
  157.    For example:
  158.    BGIDriverPath  "C:/TC/BGI/ATI"
  159. 14. GraphDriver - Set what type of display device to use. The relative driver
  160.    *.BGI are looked in the directory specified in BGIDriverPath above.
  161.    The following values are valid (same as TC 2.0/TC++ 1.0 graphics.h file
  162.    if that helps):
  163.    0 - Auto detect (default, so you can delete this one...)
  164.    1 - CGA (Hires two colors mode)
  165.    3 - EGA
  166.    4 - EGA64
  167.    5 - EGAMONO
  168.    7 - Hercules
  169.    8 - ATT (Not tested)
  170.    9 - VGA
  171.    999 - SVGA (super VGA - see SVGANameMode below)
  172.    For example:
  173.    GraphDriver    999
  174. 15. SVGANameMode - select a BGI driver to use. This driver is searched for only
  175.    if GraphDriver above is set to 999. Thus driver is assumed to be 800 by
  176.    600 in resolution but any driver with 4:3 aspect ratio will probably be
  177.    o.k.. This driver is searched in the directory specified by BGIDriverPath
  178.    above. For example if the driver you want to use is ATI.BGI and in mode 2:
  179.    SVGANameMode "ATI.2"
  180. 16. Libraries - String value. A list of libraries (neither file type, nor full
  181.    path is required - only the name) to automatically load on restart,
  182.    separated with commas (','). Libraries can also be loaded using the libs
  183.    main menu, and/or will be automatically loaded when a data files needs them.
  184.    For example:
  185.    Libraries    "TTL4LS,EPROM,GENERAL,LINEAR"
  186. 17. LibrariesPath - String Value. Full path where libraries from
  187.    LoadLibByName should be searched for. Note libraries loaded automatically
  188.    will be searched in all path dirs and specified by PATH env. variable.
  189. 18. FrameWidth - Integer value. Sets the border width for all windows.
  190. 19. Colors control. Below are all colors values to select. Each can be one of
  191.    the following 8 colors:
  192.     0 - WHITE
  193.     1 - BLACK
  194.     2 - RED
  195.     3 - GREEN
  196.     4 - BLUE
  197.     5 - YELLOW
  198.     6 - CYAN
  199.     7 - MAGENTA
  200.    The colors are self explanatory and grouped into the following groups:
  201.    Root controls colors of the back ground root window. Actv sets the active
  202.    drawing window colors. Psv sets the passive window(s) colors. PopUp
  203.    controls all pop ups like queries colors. HighLigh sets the highlight
  204.    objects color. Below are the color groups themselves.
  205.  
  206.     ;Root window - the backgound.
  207.     RootFrameolor    7
  208.     RootForeColor    3
  209.     RootBackColor    5
  210.     RootXorColor    6
  211.  
  212.     ;Pop up menus/queries.
  213.     PopUpFrameColor    2
  214.     PopUpForeColor    5
  215.     PopUpBackColor    5
  216.     PopUpXorColor    6
  217.  
  218.     ;The currently active file/window if any.
  219.     ActvFrameColor    2
  220.     ActvForeColor    5
  221.     ActvBackColor    4
  222.  
  223.     ;All other passive files/windows if any.
  224.     PsvFrameColor    3
  225.     PsvForeColor    5
  226.     PsvBackColor    4
  227.  
  228.     ;High light color - selected items.
  229.     HighLightColor    2
  230.  
  231. If this configuration file is not found in any of the path directories,
  232. a message is printed to the screen, and internal defaults will be used
  233. instead. This is NOT recommended - fix that as soon as you can, as the
  234. internal defaults are not guaranteed to be anything specific.
  235.  
  236. EEDraw.bnd
  237. ----------
  238.  
  239. This file allow you to bind any of the program internal functions (as can be
  240. selected from any of the menus) to a specific key. Note some keys are
  241. hard-bound and can not be used to rebind function (such as arrow keys - see
  242. Functionality below). The format of the file is following.
  243. Empty lines, or lines begin with a semicolon (';') are ignored.
  244. Every line consists of three items: "FunctionName KeyName ScanCode"
  245. seperated by white spaces. FunctionName are the fixed names this program
  246. supports (see blow). KeyName is the name of the key ("AltK" for example) this
  247. FunctionName will be bound to. Up to 4 characters are allowed for KeyName, and
  248. this name will appear in the main menu which contains this function. ScanCode
  249. is the scan code of the bounded key. If the key is regular ascii code, this
  250. ascii code is the scan code. If it is extended code (such as F? keys are), add
  251. 256 to this value. All numbers should be in decimal.
  252. Currently available FunctionName(s) and their associated main menu (see
  253. Functionality section below for their description):
  254.  
  255. File menu:
  256.     LoadEEDFile
  257.     NewEEDFile
  258.     SaveAllEED
  259.     SaveEEDFile
  260.     SaveEEDAsOld
  261.     SaveEEDAsNew
  262.     SaveNetList
  263.     CloseEEDFile
  264.     ClearAll
  265.     Directory
  266.     ChangeDir
  267.     ShellToDos
  268.     ExitEEdraw
  269.  
  270. Window menu:
  271.     PopWindow
  272.     PushWindow
  273.     MoveWindow
  274.     ResizeWindow
  275.     FullSize
  276.     ShowName
  277.     MakeActive
  278.     NameActive
  279.     PanWindowLeft
  280.     PanWindowRight
  281.     PanWindowUp
  282.     PanWindowDown
  283.  
  284. Display menu:
  285.     ZoomOut
  286.     ZoomIn
  287.     ZoomReset
  288.     RedrawAll
  289.  
  290. Libs menu:
  291.     LoadLibrary
  292.     LoadLibByName
  293.     FreeLibrary
  294.     ViewLibrary
  295.     DirLibrary
  296.     ChDirLibrary
  297.  
  298. Draw menu:
  299.     DrawLine
  300.     DrawBus
  301.     DrawConnect
  302.     DrawText
  303.     DrawLibItem
  304.  
  305. Modify menu:
  306.     ModifyMove
  307.     ModifyCopy
  308.     EditLibItem
  309.     ModifyDelete
  310.     ModifyUnDel
  311.     ModifyCut
  312.     ModifyPaste
  313.     ModifyDrop
  314.  
  315. Status menu:
  316.     Help
  317.     GetMemoryFree
  318.     GetZoomFactor
  319.     SetDrawText
  320.     SetTextSize
  321.     SetHVLines
  322.     SetSnapFactor
  323.  
  324. Other (not in any menu):
  325.     SameAgain
  326.  
  327. 4. Functionality
  328. ----------------
  329.  
  330. This section describes the currently available function set, and main modes.
  331. Although most of the keys may be bound to any function as described in the
  332. Setup section (EEDraw.bnd description), some of them are hard-bound and should
  333. not be used. Note that in order for enhanced Keyboard scan codes to be used,
  334. such as F11 and F12, 'ATKeyboard' must be set to TRUE in eedraw.cfg file.
  335. See 'Mouse' and 'Joystick' in eedraw.cfg for mouse and joystick setup.
  336. Below are the "hard-bound" keys:
  337. A. All the numeric keypad (arrow keys, home, PhUp, End, PgDn). These keys
  338.    are used to move to cursor (even if mouse exists).
  339. B. All the numeric keys but 0 (used by shift-arrows).
  340. C. Enter (or Return) key. this is the SELECT key.
  341. D. Space bar. This is the ABORT key.
  342. E. Tab. This is equivalent to MIDDLE button key.
  343.  
  344. The arrow keys are used to move the cursor (co-exist with mouse), and if
  345. shifted, move cursor faster. In addition to the cursor movement, two
  346. important keys are defined as well:
  347. A. SELECT key, hard-bound to the Enter (or Return), left button on mouse,
  348.    if such exists, and button 1 on the joystick, if exists.
  349. B. ABORT key, hard-bound to the Space bar, right button on mouse if such
  350.    exists, and button 2 on the joystick, if exists.
  351. C. MIDDLE key, hard-bound to the Tab, middle button on mouse if such
  352.    exists (or pressing both mouse buttons), and both buttons on the joystick.
  353. All the eedraw functions described below uses these hard-bound keys.
  354.  
  355. This version supports multi file editing via multi window system (running
  356. on regular DOS). Each time a file is being open, a new window is created
  357. for it. If window header is to be shown (see ShowName function below) the
  358. file name the window is associated with is displayed in addition to its
  359. status as:
  360. O)riginal - this file is exactly the same as first loaded in.
  361. M)odified - the current file state should be saved. Data has been modified.
  362. S)aved    - file has been modified since it was first loaded, but current
  363.         state is being saved.
  364. There is no limit to number on the number of windows/files that may be open
  365. at once, aside from DOS and memory limits. The libraries are being shared
  366. between all files, so reduce memory usage. This means that even if two
  367. (or more) files needs LINEAR.LIB it will be loaded once into memory.
  368. However, there is no way for the program to detect which file uses which
  369. library when they are being saved and it is assumed ALL libraries currently
  370. loaded are being used by all files.
  371.  
  372. Few type of interactors are defined to query the user:
  373. A. Yes/No question - prompt the question, with Yes and No buttons. The SELECT
  374.    key will select the answer. ABORT key is ignored. One may use the Y/N
  375.    keys as well to signal Yes/No answer.
  376. B. Continue question - prompt a message, and wait for SELECT on the continue
  377.    button. ABORT key is ignored. One may use the C key to continue as well.
  378. C. String question - prompt a message, and waits for string input. This
  379.    facilitates a full line editor as follows (independent of key bindings):
  380.    * Right and Left arrows will move right and left.
  381.    * Insert toggles Insert/Overwrite modes (toggles cursor shape).
  382.    * Delete deletes current character.
  383.    * Backspace deletes character to the back.
  384.    * Home and End will move to beginning/end of string respectively.
  385.    * Esc clears the current string.
  386.    * Return will terminate editing.
  387. D. List question - prompt with a list of items (files names for example).
  388.    An item will be picked by the SELECT key if applicative (when viewing
  389.    a directory nothing needs to be picked). ABORT key will usually abort
  390.    the operation, but may have some special operation as well or may be
  391.    ignored.
  392. E. Menu(s) question. Two types of menus are used - top down from the main menu,
  393.    and pop up on special occasions. Menus behave very much like List questions.
  394.    SELECT key selects menu item while ABORT key usually abort the menu with no
  395.    selection at all.
  396.  
  397. A. File menu:
  398.     LoadEEDFile - Prompts for a file name (List question), and reads it
  399.         from the current directory, if SELECT key, abort if ABORT key.
  400.         Note file type must be '.eed'. A new window is created for
  401.         it while the user is prompted to set the window size (see
  402.         ResizeWindow).
  403.     NewEEDFile - Creates a new drawing window not assosicated with any
  404.         file. This is the way to create new drawings. The user is
  405.         prompted to set the window size (see ResizeWindow).
  406.     SaveAllEED - Saves all unsaved drawings. This is probably useful
  407.         before quiting eedraw.
  408.     SaveEEDFile - Saves currently edited file. This routine can be used
  409.         only after a new file was saved at list once, or it was loaded.
  410.         In both cases, it will be saved on the same name, after
  411.         renaming old one to have '.bak' extension.
  412.         Ask for verification (Yes/No question).
  413.     SaveEEDAsOld - Same as SaveEEDFile, but prompts with list of all '.eed'
  414.         files in current directory, and saved by the name selected if
  415.         SELECT key, or abort if ABORT key.
  416.     SaveEEDAsNew - Same as SaveEEDFile, but prompts for a new file using
  417.         String question.
  418.     SaveNetList - Save a net list for the active window. Default name is
  419.         same as '.eed' but with '.net' type. Net list is generated by
  420.         scanning the lines and buses object in the drawing. A draw
  421.         should be designed ahead of time so the net list will
  422.         be correct in two respects:
  423.         1. The net list can not identify individual pins in a BUS and
  424.            will list them all as one (BUS) connection. Therefore
  425.            bus lines should be made individually if this program is
  426.            to make a full net list for it.
  427.         2. Since only lines and buses are scanned, library items
  428.            connected directly connection will not be detected. An
  429.            easy solution is to put a dummy line connection there so
  430.            that connection will be scanned correctly.
  431.         When the net list is generated the scanned lines/buses are
  432.         highlighted so the remaining non scanned ones can be easily
  433.         viewed (2 above).
  434.     CloseEEDFile - Closes a drawing window associated with a file. Note
  435.         that non of the above saving functions close the window,
  436.         and this function is the only way to close a window.
  437.         Ask for verification if data modified (Yes/No question).
  438.     ClearAll - Clears all eedrawing data in a picked window. The user is
  439.         requested to "click" on the window to clear.
  440.         Ask for verification (Yes/No question).
  441.     Directory - Display content of current directory as in List question.
  442.         both SELECT key and ABORT key can be used to exit this mode.
  443.         Unlike LoadEEDFile, all files are displayed.
  444.     ChangeDir - Prompts with String question for a new directory. Old
  445.         directory is provided to begin with.
  446.     ShellToDos - "Fork"s (I wish this was true...) to the DOS O.S. . Type
  447.         'exit' at the DOS prompt to return to EEDraw.
  448.     ExitEEdraw - Exits the Program.
  449.         Ask for verification (Yes/No question) and issue a warning
  450.         if not all files were saved.
  451.  
  452. Window menu:
  453.     PopWindow - Pops up a window the user picks. The window is being
  454.         picked by "clicking" on it. ABORT key aborts this operation.
  455.     PushWindow - Pushes down a window the user picks. The window is being
  456.         picked by "clicking" on it. ABORT key aborts this operation.
  457.     MoveWindow - Moves a window the user picks. The window is being
  458.         picked by "clicking" on it. ABORT key aborts this operation.
  459.         The picked window frame is poped up so current position is
  460.         all visible. The cursor prompt changes to a box in the window
  461.         size that the user needs to place as the new position.
  462.     ResizeWindow - Same as MoveWindow but for resizing the window.
  463.     FullSize - Blows up a window the user picks. The window is being
  464.         picked by "clicking" on it. ABORT key aborts this operation.
  465.         This make the window as big as possible in the current
  466.         display device. Calling this function again on the window
  467.         will recover its original size.
  468.         This function may be activated on drawing windows only.
  469.     ShowName - A toggle to show/hide window name. The window name is
  470.         simply the filename the window is associated with. Also
  471.                 displayed is O)riginal, M)odified, or S)aved file status
  472.                 as O/M/S letters.
  473.     MakeActive - All drawing operations are performed on the active
  474.         window. If only one drawing window exists it is the active
  475.         one. If more, exactly one of them is the active one. This
  476.         function selects the active window by a user pick. The window
  477.         is being picked by "clicking" on it. ABORT key aborts this
  478.         operation.
  479.     NameActive - All drawing operations are performed on the active
  480.         window. If only one drawing window exists it is the active
  481.         one. If more, exactly one of them is the active one. This
  482.         function selects the active window by name. A list query of
  483.         all drawing window (file) names is being poped up and the
  484.         selected becomes the active one.
  485.     PanWindowLeft - Pan the ACTIVE window a half window to the left.
  486.     PanWindowRight - Pan the ACTIVE window a half window to the right.
  487.     PanWindowUp - Pan the ACTIVE window a half window up.
  488.     PanWindowDown - Pan the ACTIVE window a half window down.
  489.  
  490. Display menu:
  491.     ZoomOut - Zoom out (center of screen remains at center) by factor of 2.
  492.         Note that if you zoom out from regular zoom factor, text will
  493.         disappear as it can not be shrinked. You can enable text from
  494.         the Status menu manually.
  495.     ZoomIn - Zoom in (center of screen remains at center) by factor of 2.
  496.     ZoomReset - Reset Zoom value to the regular zoom factor.
  497.     RedrawAll - Redraw all screen.
  498.  
  499. Libs menu:
  500.     LoadLibrary - Prompts for a file name (List question), and reads it
  501.         from the library directory, if SELECT key, abort if ABORT key.
  502.         Note file type must be '.lib'.
  503.     LoadLibByName - Loads one or several libraries (seperated by commas)
  504.         by providing their names. To load EPROM.LIB and LINEAR.LIB
  505.         "eprom,linear" should be typed. Libraries are been search in
  506.         all directories as specified by the PATH environment variable.
  507.     FreeLibrary - Prompts with all loaded libraries with List question,
  508.         and frees the selected one if SELECT key, abort if ABORT.
  509.     ViewLibrary - Prompts with all loaded libraries with List question,
  510.         If a library has been selected via SELECT key, prompt with
  511.         all parts defined in this library again with a List question.
  512.         Selection of a part with SELECT key will display it. ABORT will
  513.         go back to library List question, which can be aborted again
  514.         via the ABORT key.
  515.     DirLibrary - Displays content of library directory library files
  516.         (those with '.lib' extension) as in List question.
  517.         both SELECT key and ABORT key can be used to exit this mode.
  518.     ChDirLibrary - Prompts with String question for a new directory
  519.         for library search. Old directory is provided to begin with.
  520.         This directory is used for Load/DirLibrary routines above
  521.         only. LoadLibByName and auto library loading upon eedraw file
  522.         loading will search all ddirectories as specified by the PATH
  523.         environment variable.
  524.  
  525. Draw menu:
  526.     DrawLine - Enters drawing mode. If HVLines is set (see SETUP,
  527.         EEDraw.cfg section), only horizontal/vertical lines are
  528.         allowed.
  529.         In this mode, pressing SELECT key will insert a new point
  530.         in the created polyline and pressing ABORT will delete the
  531.         last entered point.
  532.         If however, there are no points at all in the current polyline,
  533.         ABORT key will abort this mode.
  534.         Also, pressing SELECT twice (at the SAME place as the last
  535.         point entered) will complete the drawn polyline.
  536.         MIDDLE key will also complete the line drawing.
  537.     DrawBus - Same as DrawLine, but draw thicker lines.
  538.     DrawConnect - Draw a connection junction, if SELECT key is pressed,
  539.         or abort if ABORT key is pressed.
  540.     DrawText - Prompts for a string with String question, and then position
  541.         the text horizontally or vertically. If the positioning is
  542.         terminated with ABORT it is ignored, SELECT will update.
  543.     DrawLibItem - Prompts for a part name with String question. If this is
  544.         not the first invocation to this mode, last part will be
  545.         used as default string (remember you can always use Esc to
  546.         clear to a fresh line). If part is found (name is exactly the
  547.         same as    shown in the ViewLibrary function above), a pop up
  548.         menu will allow to rotate it 90 degree CW or CCW or mirror it.
  549.         Successive SELECT will transform the library item to the
  550.         desired orientation, while ABORT will abort this DrawLibItem
  551.         mode. SELECT PlaceIt (top menu entry) will allow to position
  552.         the part in the exact place.
  553.         The user is also being prompted for Chip (i.e. 74LS00) and
  554.         Part (i.e. IC7) names if they are required/allowed (see
  555.         Appendix on library file definition) for this part.
  556.         These are positioned similar to the way DrawText position
  557.         its text, except that Chip name    is already known and can not
  558.         be modified.
  559.  
  560. Modify menu:
  561.     This menu is heavily based on Picking objects. a single object is
  562.     being picked if the cursor is on an object. The cursor is considered
  563.         on an object if one of the following:
  564.     A. Line and Bus items: the cursor is on one of the Line/Bus end points
  565.        (any point that was set by SELECT when it was created, including
  566.        internal points).
  567.     B. Connect item: the cursor is on the Connect center.
  568.     C. Text item: the cursor is inside the smallest axes parallel bounding
  569.        box holding this text.
  570.     D. Library item: the cursor is on any polyline end point (including
  571.        internal points).
  572.  
  573.     The picked object will blink. SELECT key will select it, ABORT key
  574.     will cause the next object, if such exists at this position, to blink
  575.     until one is selected via the SELECT key, or no more objects can be
  576.     picked.
  577.  
  578.     If no object at all is found at the cursor point, the point is used
  579.     as first corner of a box to pick a set of objects - a second SELECT
  580.     key will pick the second corner of the box, ABORT key will abort this
  581.     mode. All objects intersect with the defined box, will be considered
  582.     picked, with no more verification.
  583.  
  584.     ModifyMove - Pickes object(s), and moves it (them) to a new position.
  585.         Once the object(s) i s(are) picked, SELECT key will set
  586.         its(their) new    position, ABORT will leave it unchanged.
  587.     ModifyCopy - Pickes object(s), and copies it (them) to a new position.
  588.         Once the object(s) is (are) picked, SELECT key will place
  589.         it(them) in new position, ABORT will abort the copy operation.
  590.     EditLibItem - if the picked object(s) is a single library item, allows
  591.         editing any of the following (via a pop up menu):
  592.         A. Editing the part name. This is the only way to add a part
  593.            name to a library item if the library item has none by
  594.            default.
  595.         B. Toggle to Draw/Undraw chip name (if this chip is allowed
  596.            to have one).
  597.         C. Reposition Chip name (if this chip have one).
  598.         D. Reposition Part name (if this chip is allowed to have one).
  599.         E. Reorient the lib part.
  600.         Picking one of the above via SELECT will allow text
  601.         positioning or text editing (via String question). ABORT or
  602.         selecting Done (first menu entry) will abort this EditLibItem
  603.         mode.
  604.     ModifyDelete - Deletes the picked object(s). The deleted object(s) is
  605.         (are) saved in a special 10 places deep stack, and deleted
  606.         items can be undeleted using the ModifyUnDel function.
  607.         Each of the 10 placed stack can hold any result of a pick
  608.         no matter how many objects are inside.
  609.         This Delete/Undelete mechanism can be used to cut and paste
  610.         even between different files/windows - this stack is never
  611.         being cleared.
  612.     ModifyUnDel - Undelete the last delete operation (see ModifyDelete),
  613.         from the delete stack (LIFO).
  614.     ModifyCut - Same as ModifyDelete, but original is NOT deleted. The
  615.         object is being pushed onto the undelet stack and can then be
  616.         ModifyUnDel, ModifyPaste etc.
  617.     ModifyPaste - Same as ModifyUnDel, but the undelete stack is NOT
  618.         modified. This function enables pasting and placing the same
  619.         object few times.
  620.     ModifyDrop - Drops the top of stack from the undelete stack. May be
  621.         used to drop a cut/paste object sequence from stack.
  622.  
  623. Status menu:
  624.     Help - Pops up an help window and displays the content of eedraw.hlp.
  625.         If the help window is already poped up, this function will
  626.         close it (acts like a toggle.).
  627.     GetMemoryFree - Prompts with a continue question, on the current free
  628.         memory. Getting close to zero is unsafe!
  629.     GetZoomFactor - Allows you to see the current zoom factor
  630.     SetDrawText - Sets drawing of text smaller than minimal size (8x8).
  631.         This will draw text at 8x8 size which is too big, but may be
  632.         sometimes useful.
  633.     SetTextSize - Sets the scaling (up only) of the text size. By default
  634.         this is equal to 1, but up to scaling up by 7 is allowed.
  635.     SetAutoPan - If TRUE, auto panning will occur when placing
  636.         objects that have been moved off the active WINDOW. The
  637.         object will be place so it is centered in the window.
  638.     SetHVLines - Allows drawing of diagonal lines as well if set to FALSE.
  639.         Uses Yes/No question.
  640.     SetSnapFactor - Sets the invisible grid the cursor position is
  641.         snapped to. You probably do not want to change this,
  642.         especially not in the middle of file editing.
  643.         Uses String question, and display current Snap factor to
  644.         begin with.
  645.  
  646. Other (not in any menu):
  647.     SameAgain - Executes the last function again. This is hard bounded
  648.         to MIDDLE key, although in may be bounded to another key
  649.         as well.
  650.  
  651. 5. Spacial Notes
  652. ----------------
  653.  
  654. Designing using A4 page size does not require much memory even when few
  655. libraries are loaded. My system with 640k (-70k of the O.S) has almost 300k
  656. free to use (Use the GetMemoryFree function to query free memory), when all the
  657. provided libraries are loaded. I guess you will need to work hard to get down
  658. to less than 100k. If you succeed and/or you system has less than 640k memory,
  659. make yourself a rule: never to go below 64k of free memory. The program need
  660. about 32k of temporary memory for the different operations, and getting close
  661. to that is dangerous! When you approach 32k of free memory, you will be
  662. issued a warning (Continue question):
  663.  
  664. Free memory too small - dangerous to continue.
  665.  
  666. Every 30 second (if you do any operation in that time). Continuing at this
  667. point may result with loss of all your work - the program will exit when no
  668. more memory will be available! This is especially true if 'SaveBackMethod'
  669. in eedraw.cfg is set to conventional memory.
  670.  
  671. Yes, I know this is ugly, but you eat what you cook, right? I used this
  672. program quite a bit, and never succeeded to go below 200k, so why bather.
  673.  
  674. 6. Acknowledgement
  675. ------------------
  676.  
  677. I would like to thank skh@eng.sun.com (Steve Howell) for his great comments
  678. during the last stages of bringing version 2.0 up.
  679.  
  680. -------------------------------------------------------------------------------
  681.  
  682. Appendix A. Glossary
  683. --------------------
  684.  
  685. SELECT Key - The key used for the select operation. Currently hard-bound to
  686.     Enter (or Return), the Left mouse button if mouse exists, and to
  687.     Button 1 in a joystick.
  688.  
  689. ABORT Key - The key used for the abort operation. Currently hard-bound to
  690.     Space bar, the Right mouse button if mouse exists and to Button 2
  691.     in a joystick.
  692.  
  693. MIDDLE key - Another general purpose key. Currently hard-bound to
  694.     Tab keyr, the Middle mouse button if mouse exists and has middle
  695.     button (or both right and left buttons pressed simultaneously)
  696.     and to both Buttons of the joystick.
  697.  
  698. Screen Space - the space of the display device. Depends on the graphic
  699.     device coordinates on the selected mode.
  700.  
  701. Drawing Space - the space in which the drawing objects exist. This space
  702.     is bounded by a wide box (zoom out twice to see this box on an
  703.     empty drawing) so it will fit into an A4 (8.5" by 11") page in both
  704.     the EPSON and the PostScript printer drivers (see Appendix B).
  705.  
  706.  
  707. Appendix B. Printer drivers
  708. ---------------------------
  709.  
  710. The following printer drivers are available (see also installation section):
  711.  
  712. 1. EPSON printer.
  713.  
  714.     Usage: EEDEpson [-g] [-r] [-1] [-2] [-3] [-d] [-z] FileName[.EED]
  715.  
  716.     Options: [-g] Output goes to standard output as 1 bit per pixel (B&W)
  717.             GIF file.
  718.          [-r] Output goes to standard output as raw data.
  719.          [-1], [-2], [-3] Output goes to LPT1:, LPT2:, LPT3:
  720.             respectively.
  721.          [-d] If output goes to Epson printer - print in double the
  722.             density.
  723.          [-z] Print version number and usage.
  724.  
  725.         * if neither [-g], not [-r] are specified, output is in Epson
  726.           compatible format (default).
  727.         * If non of [-1], [-2], [-3] are specified, output goes to
  728.           standard output.
  729.         * [-1], [-2], [-3], [-d] are ignored if [-g] or [-r] are
  730.           specified.
  731.  
  732. 2. PostScript Printer.
  733.  
  734.     Usage: EED-PS [-f FontName] [-z] FileName[.EED]
  735.  
  736.     Options: [-z] Print version number and usage.
  737.             [-f FontName] Specify the font name to use instead of the
  738.                default name (Times-Roman).
  739.  
  740.     PostScript output goes to stdout. If a PostScript Printer is
  741.     connected to com2: serial port then 'eed-ps drawing.eed > com2:'
  742.     will print drawing.eed on that printer.
  743.  
  744. Appendix C. Library file format
  745. -------------------------------
  746.  
  747.     This appendix describes the format of the library file. It contains
  748. all the information required to create your own libraries. The libraries are
  749. designed to be parametric only. I.e. no bitmaps are supported. You can look
  750. at the given libraries while reading this appendix for better understanding.
  751.  
  752.     Empty lines and lines starts with '#' are ignored. In order to identify
  753. a library as such the first line must start with 'EEDRAW-LIB'. Following in
  754. the same line is version number as 'Version X.X'. Currently 'X.X' equal '1.0'
  755. and is ignored. However it may be used in future versions, to ensure backward
  756. compatibility. Following are the parts themselves. Each part definition begins
  757. as follows:
  758.  
  759. DEF Name Prefix #Pins TextInside DrawNum #Units #PinsPerUnit
  760.  
  761. Were    1. Name is the Part name, i.e. "74LS00". If Name is prefixed with "~"
  762.        (for example "~74LS00") then the name is not drawn, nor it will be
  763.        accessible to the user.
  764.     2. Prefix is the prefix to be used in chip name (IC, R, C etc.). If
  765.        prefix is "~", then no prefix is drawn.
  766.     3. #Pins is the same as number of entries in PINS (see below),
  767.        i.e 14 for 74LS00.
  768.     4. TextInside is 0 if pin text is to be put outside as well (as the
  769.        pin numbers are), otherwise inside. You may put any positive
  770.        integer there to scale the distance inside. 10 is a good start.
  771.     5. DrawNum is 1 if pin numbers are to be drawn, 0 otherwise.
  772.     6. #Units holds number of multiple entries. For example 74LS00 has
  773.        4 units (Nand gates). For no multiple units put 0 here.
  774.     7. #PinsPerUnit holds number of entries for one unit if more than
  775.        one unit per part. If #Units is 0, it is ignored.
  776.  
  777. The part definition follows by the following blocks, in any order:
  778.  
  779. 1. DRAW/ENDDRAW - defines how to draw the part. This block is optional, and
  780.    a simple box with half the pins on each side is drawn if this block is
  781.    not defined. The following commands are supported:
  782.    A x y r t1 t2        (Define ARC at x, y, radius r, angles t1 to t2)
  783.    P n x y x y x y... [F]    (Define a POLYLINE of (any) length n)
  784.    C x y r            (Define a CIRCLE at x, y, radius r)
  785.    S x1 y1 x2 y2        (Define a square (Not filled))
  786.    T x y h str            (Define a text string at x, y (see below))
  787.    L x1 y1 x2 y2 [I]        (Define terminal line to part - see PINS)
  788.  
  789.    Notes:
  790.    A. a text string (S) with be drawn horizontally if h is 1, vertically if 0.
  791.       Also '~' characters will be replaced by spaces, or this provides a
  792.       mechanism to have spaces in the string.
  793.    B. If the polyline (P) is postfixed by a F, the polyline should define a
  794.       closed shape that will be filled. The first point of the polyline must
  795.       be identical to last one in this case.
  796.    C. If the line (L) is postfixed by an I, this line is assumed to define
  797.       negative logic, and a small circle will be drawn to express that.
  798.    D. The number of L definitions should be exactly the same as #Pins in the
  799.       DEFS line if #Units = 0, and equal #PinsPerUnit if #Units != 0.
  800.       The order will match to the order in the PINS/ENDPINS block if #Units = 0
  801.       and to the order in the MULTI/ENDMULTI if #Units != 0.
  802.    E. Arcs (A) should not exceed 180 degrees, are CCW, and 0 degrees is at
  803.       3 o'clock.
  804.  
  805. 2. PINS/ENDPINS - defines the names (strings) associated with each pin. This
  806.    block must always exists, and it is the minimum required to define a part.
  807.    The block holds #Pins lines each hold the string defines that pin. This
  808.    order must be the same as define in the DRAW/ENDDRAW as L commands
  809.    (if DRAW/ENDDRAW block is defined), from pin 1 to #Pins. Empty lines
  810.    are allowed and defined with only '~' in them. Not sign for X (vertical bar
  811.    above it) is defined by ~X.
  812.  
  813. 3. MULTI/ENDMULTI - This block must exists iff #Unit != 0. Each line in this
  814.    provides a mapping from L terminal definitions in the DRAW/ENDDRAW block
  815.    to the pin numbers in a multi unit part. This is required as same L
  816.    terminal will have different pin number in different Units.
  817.    Each line in this block holds the pin numbers of a unit.
  818.    Number of lines should be equal to number units in part.
  819.  
  820. Part definition terminates with the ENDDEF line.
  821.  
  822. General Notes:
  823.  
  824. 1. All parts are scaled up to easy the access of a single pin (by 16, but you
  825.    should not wonder about it too much - its internal mapping to drawing
  826.    space).
  827. 2. Library file can hold any number of parts (at list one though...).
  828. 3. Library file must have '.lib' extension, to be usable by the EED* programs.
  829.  
  830.  
  831. Gershon Elber
  832. Email: gershon@cs.utah.edu